Database Tutorials Complex Aggregation Query লেখা

Database Tutorials - এসকিউএল সার্টিফিকেশন (SQL Certification) - SQL এ Aggregate Functions এবং Grouping
365

SQL এ Aggregation Functions যেমন COUNT(), SUM(), AVG(), MAX(), এবং MIN() ব্যবহার করে ডেটার উপর বিভিন্ন ধরনের সমষ্টিগত গণনা করা যায়। যখন এসব ফাংশনকে একত্রে, শর্ত বা গ্রুপিংয়ের সাথে ব্যবহার করা হয়, তখন সেটি একটি Complex Aggregation Query হয়। এই ধরনের কোয়েরি সাধারণত বৃহত্তর ডেটা সেটের বিশ্লেষণ বা প্রতিবেদন তৈরি করতে ব্যবহৃত হয়।

এখানে আমরা দেখবো Complex Aggregation Query কীভাবে লেখা যায় বিভিন্ন ফাংশন ও শর্তাবলী (যেমন: GROUP BY, HAVING, JOIN) ব্যবহার করে।


Complex Aggregation Query এর সিনট্যাক্স:

SELECT column1, aggregation_function(column2), ...
FROM table_name
WHERE condition
GROUP BY column1
HAVING aggregation_condition
ORDER BY column1;
  • aggregation_function(): যে অ্যানালিটিক্যাল ফাংশনটি প্রয়োগ করা হবে, যেমন SUM(), COUNT(), AVG(), ইত্যাদি।
  • GROUP BY: ডেটা গ্রুপ করার জন্য ব্যবহার করা হয়।
  • HAVING: গ্রুপের পরে শর্ত প্রদান করা হয় (এটি WHERE থেকে আলাদা, কারণ WHERE শুধুমাত্র রো লেভেল ফিল্টারিং করতে ব্যবহৃত হয়)।
  • ORDER BY: ফলাফলকে নির্দিষ্ট একটি কলাম অনুযায়ী সাজানোর জন্য।

Complex Aggregation Query এর উদাহরণ:

ধরা যাক, আমাদের একটি sales টেবিল রয়েছে যেখানে নিম্নলিখিত কলামগুলো আছে:

  • product_id: পণ্যের আইডি
  • sale_date: বিক্রির তারিখ
  • quantity: বিক্রি হওয়া পণ্যের পরিমাণ
  • price: পণ্যের মূল্য

Query 1: একটি পণ্য প্রতি মোট বিক্রির পরিমাণ এবং আয় (SUM ও COUNT ব্যবহার করে)

আমরা চাই প্রতিটি পণ্যের জন্য মোট বিক্রি হওয়া পরিমাণ (Quantity) এবং মোট আয় (Total Revenue) দেখাতে, যেখানে আয়ের হিসাব হবে quantity * price

SELECT product_id,
       SUM(quantity) AS total_quantity,
       SUM(quantity * price) AS total_revenue
FROM sales
GROUP BY product_id
ORDER BY total_revenue DESC;
  • SUM(quantity) দ্বারা প্রতিটি পণ্যের মোট বিক্রি হওয়া পরিমাণ গণনা করা হয়েছে।
  • SUM(quantity * price) দ্বারা প্রতিটি পণ্যের মোট আয় (revenue) হিসাব করা হয়েছে।
  • GROUP BY product_id দ্বারা আমরা প্রতিটি পণ্য অনুযায়ী ডেটা গ্রুপ করেছি।
  • ORDER BY total_revenue DESC দ্বারা সর্বোচ্চ আয় পণ্য প্রথমে দেখানো হবে।

Query 2: নির্দিষ্ট তারিখের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন বিক্রি হওয়া পণ্য (MAX, MIN ব্যবহার করে)

এখন, আমরা যদি একটি নির্দিষ্ট তারিখের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন বিক্রি হওয়া পণ্যের সংখ্যা দেখতে চাই, তবে আমরা MAX() এবং MIN() ফাংশন ব্যবহার করবো:

SELECT product_id,
       MAX(quantity) AS max_quantity,
       MIN(quantity) AS min_quantity
FROM sales
WHERE sale_date BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY product_id
HAVING MAX(quantity) > 100
ORDER BY max_quantity DESC;
  • MAX(quantity) সর্বোচ্চ বিক্রি হওয়া পরিমাণ প্রদান করবে, এবং MIN(quantity) সর্বনিম্ন বিক্রি হওয়া পরিমাণ প্রদান করবে।
  • WHERE sale_date BETWEEN '2024-01-01' AND '2024-12-31' দ্বারা ২০২৪ সালের মধ্যে বিক্রির রেকর্ড ফিল্টার করা হয়েছে।
  • HAVING MAX(quantity) > 100 শর্ত দেয় যে শুধুমাত্র সেই পণ্যগুলো দেখাবে যার সর্বোচ্চ বিক্রির পরিমাণ ১০০ এর বেশি।
  • ORDER BY max_quantity DESC দ্বারা সর্বোচ্চ বিক্রি হওয়া পণ্য শীর্ষে দেখাবে।

Query 3: একাধিক টেবিল থেকে ডেটা নিয়ে Complex Aggregation Query (JOIN এবং GROUP BY ব্যবহার করে)

ধরা যাক, আমাদের দুটি টেবিল আছে: orders এবং customersorders টেবিলের মধ্যে customer_id, order_total এবং customers টেবিলে customer_id, customer_name রয়েছে। আমরা চাই দেখাতে যে, কোন গ্রাহক কত বার অর্ডার করেছেন এবং মোট কত টাকা খরচ করেছেন।

SELECT c.customer_name,
       COUNT(o.order_id) AS total_orders,
       SUM(o.order_total) AS total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
HAVING SUM(o.order_total) > 500
ORDER BY total_spent DESC;
  • COUNT(o.order_id) দ্বারা প্রতিটি গ্রাহকের মোট অর্ডারের সংখ্যা গোনা হচ্ছে।
  • SUM(o.order_total) দ্বারা প্রতিটি গ্রাহকের মোট খরচ হিসাব করা হচ্ছে।
  • JOIN orders o ON c.customer_id = o.customer_id দ্বারা গ্রাহক ও অর্ডার টেবিল একত্রিত করা হয়েছে।
  • HAVING SUM(o.order_total) > 500 দ্বারা শর্ত দেওয়া হয়েছে যে, শুধুমাত্র সেই গ্রাহকরা দেখানো হবে যারা ৫০০ টাকার বেশি খরচ করেছেন।

Conclusion:

Complex Aggregation Query লেখার সময়, আপনি বিভিন্ন SQL Aggregation Functions, GROUP BY, HAVING, এবং JOIN ব্যবহার করে শক্তিশালী ডেটাবেস বিশ্লেষণ করতে পারেন। এসব ফাংশন একত্রে ব্যবহার করে আপনি সহজেই ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য প্রয়োজনীয় রিপোর্ট এবং বিশ্লেষণ তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...